1. Field of the Invention
The present invention generally relates to computer software for collaborative work and, more particularly, to a synchronous collaboration system in which modifications are serialized solely by peer-to-peer communication among collaboration front-end processes or clients. No back-end software process or processes are used for serializing modifications.
2. Background Description
Software for collaborative work, i.e., work involving many users and/or agents falls into two categories of use. One is termed asynchronous collaboration and the other, synchronous collaboration. Examples of software for asynchronous collaboration are groupware such as Lotus Notes and Microsoft Exchange. These along with other examples such as discussion groups where data is changed batchwise have the characteristic that neither do they require, nor do they particularly cater to the concurrent presence of many users and agents in the work environment. Work environment can include all users and agents that use computers that are connected to each other by networks such as Internet or intranets. In contrast to software for asynchronous collaboration, software for synchronous collaboration is designed to cater to concurrent users and agents. It includes collaboration tools such as chat, concurrent whiteboards and the more sophisticated SameTime environment. These tools provide for real-time interaction among groups using the same shared workspace. Whatever be the workspace—document, spreadsheet, CAD drawing etc.—it can be seen and modified by the collaborators, simultaneously. Modifications to the workspace are made available to all group members, immediately and synchronously.
Synchrony in multiple updates made by collaboration participants has to be ensured by the underlying synchronous collaboration implementation. One of the common ways by which this is done currently is by the inclusion of a centralized server. A centralized server is a software process running on one host machine, a hardware computer or computing element, that introduces a serialization order among multiple, concurrent modifications. Thus multiple, simultaneous updates to a shared workspace are communicated to the server which converts them into a sequential stream of updates to the workspace. The sequential stream of updates is then reflected back to all participants, each of whom is assumed to be running a software process, a client, in order to interact with the workspace. Each participant or client thus sees the shared workspace develop in, an identical manner—starting from the same initial state and changing under the same stream of updates—as any other participant or client of the collaboration.
As collaboration needs scale up—number of clients changing the workspace, number of changes to the workspace, and number of synchronous views of the workspace goes up—the single server process running on a single machine and the interconnection network bringing about communication between the server and the clients can become severely loaded with computation and communication requirements. Indeed, since the architecture of the collaboration implementation is such that it focuses all communication to one point in the interconnection network, namely the server's machine, the development of an unbalanced load in the interconnection network takes place. It is possible that the interconnection network cannot effectively service the “hot spot” of communication, viz. the server's machine, despite being relatively lightly loaded in other parts of network or on the average. The result can be unacceptable delays and degradation in performance from the perspective of collaboration participants.
The inventions disclosed in co-pending patent applications Ser. Nos. 09/241,991 and 09/476,445 address this issue by breaking the one, centralized, software, server process into multiple, independently communicating, asynchronous, independent (i.e., no shared memory, data, variables), software processes. The multiple software processes are a part of a distributed server. The distributed server provides a functionality that is equivalent to the basic functionality provided by the centralized server, namely, the modification-serialization functionality. The multiple software processes of a distributed server can be distributed to different machines (which can be heterogeneous or homogeneous) available on the interconnection network and can be run simultaneously on the machines. Thus, a distributed sever can avoid focusing all communication to one point in the interconnection network and can diffuse away the “hot spot” of a centralized server into different parts of the network. The distributed server can enhance interoperability across diverse software and hardware platforms via real-time collaboration.